from flask import Flask, current_app

app = Flask(__name__)
# 应用上下文 对象 Flask
# 请求上下文 对象 Request
# Flask AppContext
# Request RequestContext
# 应用场景 离线应用，单元测试

# ctx = app.app_context()
# ctx.push()  # 入栈
# a = current_app
# b = current_app.config['DEBUG']
# ctx.pop()  # 出栈

# with 语句
'''
实现了上下文协议的的对象使用with
app_context() :上下文表达式，必须返回一个上下文管理器
上下文管理器 ：有__enter__ 和__exit__ 方法的
'''
with app.app_context():
    a = current_app
    b = current_app.config['DEBUG']

#用debug来看代码运行
class MyResource:
    def __enter__(self):
        print('connect to resource')
        return self

    def __exit__(self, exc_type, exc_value, tb):
        print('close resource connection')

    def quert(self):
        print('quert data')


with MyResource() as resource:  # as 后面的值=__enter__方法返回的值
    resource.quert()
